package fr.alesia.deepstack.factory;

import fr.alesia.deepstack.bean.Player;
import fr.alesia.deepstack.bean.Ranking;
import fr.alesia.deepstack.bean.Tournament;
import fr.alesia.deepstack.io.BeanLoader;
import fr.alesia.deepstack.io.BeanReader;
import fr.alesia.deepstack.io.BeanWriter;
import fr.alesia.deepstack.io.impl.PlayerLoader;
import fr.alesia.deepstack.io.impl.PlayerReader;
import fr.alesia.deepstack.io.impl.PlayerWriter;
import fr.alesia.deepstack.io.impl.RankingLoader;
import fr.alesia.deepstack.io.impl.RankingReader;
import fr.alesia.deepstack.io.impl.RankingWriter;
import fr.alesia.deepstack.io.impl.TournamentLoader;
import fr.alesia.deepstack.io.impl.TournamentReader;
import fr.alesia.deepstack.io.impl.TournamentWriter;

public abstract class IOFactory {

	private IOFactory(){}
	
	public static BeanWriter<Player> getPlayerWriter(){
		
		return PlayerWriter.getInstance();
	}
	
	public static BeanWriter<Tournament> getTournamentWriter(){
		
		return TournamentWriter.getInstance();
	}
	
	public static BeanWriter<Ranking> getRankingWriter(){
		
		return RankingWriter.getInstance();
	}
	
	public static BeanReader<Player> getPlayerReader(){
		
		return PlayerReader.getInstance();
	}
	
	public static BeanReader<Tournament> getTournamentReader(){
		
		return TournamentReader.getInstance();
	}
	
	public static BeanReader<Ranking> getRankingReader(){
		
		return RankingReader.getInstance();
	}
	
	public static BeanLoader<Player> getPlayerLoader(){
		
		return PlayerLoader.getInstance();
	}
	
	public static BeanLoader<Tournament> getTournamentLoader(){
		
		return TournamentLoader.getInstance();
	}
	
	public static BeanLoader<Ranking> getRankingLoader(){
		
		return RankingLoader.getInstance();
	}
}
